from multiprocessing import Process, Pipe

child_conn, parent_conn = Pipe()

def child_process(child_conn):
    child_conn.send("来自子进程的数据")
    child_conn.close()


'''
当一端（比如子进程）调用 conn2.send(data) 方法时，
数据会被序列化（通常使用 pickle 序列化）并写入管道的内部缓冲区。
这一步就相当于把数据“放入”通信信道。

在另一端（比如父进程）调用 conn1.recv() 方法时，程序会从管道中读取数据。
此方法会反序列化数据，并返回原始的数据对象。如果在调用时数据还没有到达，
则 recv() 会阻塞等待数据到来。
'''
if __name__ == "__main__":
    p = Process(target = child_process, args = (child_conn, ))
    p.start()
    print(parent_conn.recv())
    parent_conn.close()

    p.join()